A corporate or enterprise may deploy various services across a network to serve many users. For example, a user on a client may request to access a service, such as a web server. The enterprise may deploy multiple servers to provide this service in order to meet the demand and load from a volume of users accessing the service. For example, a server farm may provide a group of servers that can process the client's request. Additionally, the enterprise may deploy a load balancer to manage access to the multiple servers and direct client requests to a suitable server based on load. A load balancer distributes the load across multiple servers or services by selecting a next server to service a received request based on a scheduling or load distribution algorithm such as round robin. The load balancer may monitor requests and responses between a client and a server to determine the load or status of the server.
A load balancer does not monitor all the possible information about the operation or performance of a server or service. The server running the service has a multitude of characteristics and parameters that may affect the load of the server in handling requests directed from the load balancer. For example, the load balancer may not know the CPU or memory usage by the service on the server or how many other requests the server is servicing from a second load balancer. These factors could be used in load balancing decisions but are not readily available to the load balancer. Furthermore, a network administrator may have a better understanding of the characteristics and parameters of the server that influence the load of the server. For example, the network administrator may appreciate that the service is competing with other applications on the server and that the number of users for these other application impacts the performance of the service.
It would, therefore, be desirable to provide systems and methods to improve load balancing of services using parameters selected by a user and/or parameters available from the server.